package com.sh.rpc.protocol;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 协议消息结构
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ProtocolMessage<T> {

    /**
     * 消息头
     */
    private Header header;

    /**
     * 消息体
     */
    private T body;

    /**
     * 协议头
     */
    @Data
    public static class Header {

        private byte magic; // 魔数，保证安全性

        private byte version; // 协议版本

        private byte serializer; // 序列化方式

        private byte type; // 消息类型  请求和响应

        private byte status; // 状态码

        private long requestId; // 请求id

        private int bodyLength; // 消息体长度

    }


}
